In contrast with synchronous circuit designs that rely on a clock signal, asynchronous circuits have the advantage of being more or less insensitive to delay variations resulting for example from variations in the manufacturing process. Furthermore, by avoiding the use of a clock, asynchronous circuits have relatively low power consumption. Asynchronous circuits are generally designed to operate based on events determined using a specific handshake protocol.
The basic circuit element of an asynchronous design is based on a circuit known as a C-element or Muller circuit. This circuit includes a volatile latch for storing a state. Thus if the asynchronous circuit is powered down, the data stored by the various C-elements will be lost.
It would be desirable to provide the C-element with the capability of non-volatile storage, so that the state of the circuit can be restored following power down. However, there is a technical problem in providing a compact circuit solution that does not lead to a significant increase in energy consumption.